﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.SqlClient;
using System.Data;
using System.Text;
using DAL;
using System.Transactions;

namespace BOL.UI
{
    public class UILocalizacionBL
    {
        public int Add(dbGestionDataContext _db,
                        string descripcion,
                        string comentario,
                        decimal area,
                        int idEtapa
                       )
        {
            using (TransactionScope ts = new TransactionScope())
            {

                //dbGestionDataContext _db =
                //    new dbGestionDataContext(Parametros.strConnString);

                //datos de la empresa y empleado
                int idUsuarioCre = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
               

                DAL.UILocalizacion db = new DAL.UILocalizacion();

                db.SetAdd(_db, descripcion, idEtapa,comentario, area);

                _db.SubmitChanges();
                ts.Complete();
                return db.idInternal;
            }

        }


        public void Update(int idLocalizacion,
                        string descripcion,
                         string comentario,
                       decimal area,
                        int idEtapa,
                        int? idArchivo)
        {
            using (TransactionScope ts = new TransactionScope())
            {

                dbGestionDataContext _db =
                    new dbGestionDataContext(Parametros.strConnString);

                //datos de la empresa y empleado
                int idUsuarioCre = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
              
                var db = _db.UILocalizacions.Single(p => p.idInternal == idLocalizacion);

                db.SetUpdate(_db, descripcion, area, comentario, idEtapa, idArchivo);

                _db.SubmitChanges();
                ts.Complete();
                
            }

        }


        public void Delete(int idLocalizacion)
        {
            using (TransactionScope ts = new TransactionScope())
            {

                dbGestionDataContext _db =
                    new dbGestionDataContext(Parametros.strConnString);

                //datos de la empresa y empleado
                int idUsuarioCre = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
                

                var db = _db.UILocalizacions.Single(p => p.idInternal == idLocalizacion);

                if (db.UIBloques.Count > 0)
                {
                    throw new Exception("Existe Bloque/Piso registrados ");
                }

                _db.UILocalizacions.DeleteOnSubmit(db);


                _db.SubmitChanges();
                ts.Complete();

            }
        }


        public void DeleteBloque(int idBloque)
        {
            using (TransactionScope ts = new TransactionScope())
            {

                dbGestionDataContext _db =
                    new dbGestionDataContext(Parametros.strConnString);

                //datos de la empresa y empleado
                int idUsuarioCre = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
                


                var drw = _db.UIBloques.Single(p => p.idInternal == idBloque);

                if (drw.UIs.Count > 0)
                {
                    throw new Exception("Existe UI registradas");
                }
                //eliminamos de la coleccion
                _db.UIBloques.DeleteOnSubmit(drw);
                
                _db.SubmitChanges();
                ts.Complete();

            }
        }


        public int AddBloque(string descripcion,int idLocalizacion)
        {
            using (TransactionScope ts = new TransactionScope())
            {

                dbGestionDataContext _db =
                    new dbGestionDataContext(Parametros.strConnString);

                //datos de la empresa y empleado
                int idUsuarioCre = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
                
                var bloque = new UIBloque();
                bloque.SetAdd(_db, descripcion, idLocalizacion);

                _db.SubmitChanges();
                ts.Complete();
                return bloque.idInternal;
            }

        }




       

    }
}
